package com.bzkj.web.controller.warehouse;

import com.bzkj.basicinfo.domain.ncc.BasicSkuTypeDetail;
import com.bzkj.basicinfo.service.ncc.BasicSkuTypeDetailService;
import com.bzkj.common.annotation.LogC;
import com.bzkj.common.core.controller.BaseController;
import com.bzkj.common.core.domain.AjaxResult;
import com.bzkj.common.core.domain.R;
import com.bzkj.common.core.page.TableDataInfo;
import com.bzkj.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;

@Api(tags = "商品分类")
@RestController
@RequestMapping("/ncc/basic/skuTypeDetail")
public class BasicSkuTypeDetailController extends BaseController {

    @Autowired
    private BasicSkuTypeDetailService basicSkuTypeDetailService;

    /*
    查ncc中所有的分类---
    根据ncc中的某个分类去查对应的细分类list---
    查询全部数据---新建库区的时候，这时候再加个让用户选择二次细分表中的分类，这部分给个查询的接口
    新增传递ncc类型和list对应的wms类型---
    修改传递ncc类型和list对应的wms类型
    删除传递ncc类型和list对应的wms类型*/

    @GetMapping("/nccBasicStoStock/{id}")
    public AjaxResult getSkuTypeDetail(@PathVariable String id) {
        return basicSkuTypeDetailService.getSkuTypeDetail(id);
    }

    @GetMapping("/nccBasicStoStock")
    public TableDataInfo getSkuTypeDetailAll() {
        startPage();
        List<BasicSkuTypeDetail> skuTypeDetailAll = basicSkuTypeDetailService.getSkuTypeDetailAll();
        return getDataTable(skuTypeDetailAll);
    }


    /**
     * 第一个name是ncc中的查询的，然后后面的name是二次分类的name
     * 新增，修改都调用这个
     *
     * @param
     * @param
     * @return
     */
    @PostMapping
    public AjaxResult addSkuTypeDetail(@RequestBody HashMap<String, Object> hashMap) {
        System.out.println("-------------------");
        System.out.println(hashMap);
        System.out.println("-------------------");
        return basicSkuTypeDetailService.addSkuTypeDetail(hashMap.get("pk_marbasclass").toString(), (List) hashMap.get("names"));
    }

    /**
     * 这个name是二次细分表里面的细分id
     *
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public AjaxResult deleteSkuTypeDetail(@PathVariable String id) {
        int i = basicSkuTypeDetailService.deleteSkuTypeDetail(id);
        if (i > 0) {
            return AjaxResult.success();
        } else {
            return AjaxResult.error();
        }
    }

    @ApiOperation("新增、修改接口")
    @PutMapping
    @LogC(title = "商品分类", businessType = BusinessType.UPDATE, pkFieldNames = "stu_class_id",
            tableNames = "basic_sku_type_detail"
    )
    public AjaxResult updateWarehouse(@RequestBody BasicSkuTypeDetail basicSkuTypeDetail) {
        int result = basicSkuTypeDetailService.updateSkuTypeDetail(basicSkuTypeDetail);
        if (result > 0) {
            return AjaxResult.success("更新成功");
        } else {
            return AjaxResult.error("更新失败");
        }
    }

    /**
     * 分类数据树形结构
     *
     * @Author wangzhichao
     * @Date 2024/12/13 13:15:51
     */
    @ApiOperation("商品分类树形结构接口")
    @GetMapping("findTreeSkuTypeData")
    public R findTreeSkuTypeData() {
        return basicSkuTypeDetailService.findTreeSkuTypeData();
    }

    /**
     * 根据原料classId获取仓库信息
     *
     * @Author wangzhichao
     * @Date 2024/12/13 13:27:19
     * @Param entity
     */
    @ApiOperation("查询类别库区接口")
    @GetMapping("findBasicSkuTypeDetailByClassId")
    public TableDataInfo findBasicSkuTypeDetailByClassId(BasicSkuTypeDetail entity) {
        startPage();
        return getDataTable(basicSkuTypeDetailService.findBasicSkuTypeDetailByClassId(entity));
    }

    /**
     * 保存分类信息
     *
     * @Author wangzhichao
     * @Date 2024/12/13 13:54:53
     * @Param entity
     */
    @PostMapping("basicSkuTypeDetailSave")
    @LogC(title = "商品分类", businessType = BusinessType.INSERT, pkFieldNames = "stu_class_id",
            tableNames = "basic_sku_type_detail", content = "' 商品分类名称：'+#entity.stuClassName"
    )
    public AjaxResult basicSkuTypeDetailSave(@RequestBody BasicSkuTypeDetail entity) {
        return basicSkuTypeDetailService.basicSkuTypeDetailSave(entity);
    }

    /**
     * 商品二次分类状态修改
     *
     * @param id
     * @param status
     * @return
     */
    @ApiOperation("修改状态接口")
    @PutMapping("updateSkuTypeStatus")
    @LogC(title = "商品分类", businessType = BusinessType.UPDATE, pkFieldNames = "stu_class_id",
            tableNames = "basic_sku_type_detail"
    )
    public AjaxResult updateSkuTypeStatus(@RequestParam String stuClassId, @RequestParam String status) {
        return basicSkuTypeDetailService.updateSkuTypeStatus(stuClassId, status);
    }

}
